<?php
include 'config.php';  // Konekcija na bazu $conn

if ($_SERVER['REQUEST_METHOD'] === 'POST') {

    // ========== 1) POKUPI ZAGLAVLJE IZ $_POST ==========
    $doc_number      = $_POST['doc_number']           ?? '';
    $doc_date        = $_POST['doc_date']             ?? date('Y-m-d');
    $fiscal_number   = $_POST['broj_fiskalnog_racuna']?? '';
    $client_id       = $_POST['client_id']            ?? null;
    $iznos_slovima   = $_POST['iznos_slovima']        ?? '';
    $place_of_issue  = $_POST['place_of_issue']       ?? '';
    $note            = $_POST['note']                 ?? '';

    // Dodatna polja iz forme
    $nacin_placanja  = $_POST['nacin_placanja']       ?? '';
    $valuta_placanja = isset($_POST['valuta_placanja']) ? (int)$_POST['valuta_placanja'] : 0;
    $valuta_dospijeca = $_POST['valuta_dospijeca']      ?? '';

    // Fiksno postavi document_type_id = 1 (Faktura)
    $document_type_id = 1;

    // ========== 1a) Izračunaj ukupne iznose na temelju stavki ==========
    $total_net = 0;
    $total_discount = 0;
    $total_tax = 0;
    $total_gross = 0;

    if (isset($_POST['ukupnoBezPDV']) && is_array($_POST['ukupnoBezPDV'])) {
        foreach($_POST['ukupnoBezPDV'] as $val) {
            $total_net += (float)$val;
        }
    }
    if (isset($_POST['iznosRabata']) && is_array($_POST['iznosRabata'])) {
        foreach($_POST['iznosRabata'] as $val) {
            $total_discount += (float)$val;
        }
    }
    if (isset($_POST['ukupanPDV']) && is_array($_POST['ukupanPDV'])) {
        foreach($_POST['ukupanPDV'] as $val) {
            $total_tax += (float)$val;
        }
    }
    if (isset($_POST['ukupnoSaPDV']) && is_array($_POST['ukupnoSaPDV'])) {
        foreach($_POST['ukupnoSaPDV'] as $val) {
            $total_gross += (float)$val;
        }
    }

    // ========== 2) INSERT U document_header ==========
    $sqlHeader = "
        INSERT INTO document_header
        (
          document_type_id,
          doc_number,
          doc_date,
          fiscal_number,
          client_id,
          total_net,
          total_discount,
          total_tax,
          total_gross,
          place_of_issue,
          note,
          nacin_placanja,
          valuta_placanja,
          valuta_dospijeca,
          doc_status,
          created_at
        )
        VALUES
        (
          ?,?,?,?,?,
          ?,?,?,?,
          ?,?,
          ?,?,?,
          'kreiran',
          NOW()
        )
    ";

    $stmt = $conn->prepare($sqlHeader);
    if (!$stmt) {
        die("Greška pripreme HEADER: " . $conn->error);
    }

    // 14 parametara: "isssiddddsssis"
    $stmt->bind_param(
       "isssiddddsssis",
       $document_type_id,
       $doc_number,
       $doc_date,
       $fiscal_number,
       $client_id,
       $total_net,
       $total_discount,
       $total_tax,
       $total_gross,
       $place_of_issue,
       $note,
       $nacin_placanja,
       $valuta_placanja,
       $valuta_dospijeca
    );

    if (!$stmt->execute()) {
        die("Greška kod zaglavlja: " . $stmt->error);
    }

    $document_id = $stmt->insert_id;
    $stmt->close();

    // ========== NOVO: Dohvati tip dokumenta (type_code) iz tablice document_type ==========
    $sqlDocType = "SELECT type_code FROM document_type WHERE id = ?";
    $stmtDocType = $conn->prepare($sqlDocType);
    if ($stmtDocType) {
        $stmtDocType->bind_param("i", $document_type_id);
        $stmtDocType->execute();
        $resDocType = $stmtDocType->get_result();
        if ($resDocType->num_rows > 0) {
            $rowDocType = $resDocType->fetch_assoc();
            $dokument_vrsta = $rowDocType['type_code'];
        } else {
            $dokument_vrsta = 'FAKTURA';
        }
        $stmtDocType->close();
    } else {
        $dokument_vrsta = 'FAKTURA';
    }

    // ========== 3) INSERT STAVKI U document_item ==========
    $sifra          = $_POST['sifra']          ?? [];
    $jm             = $_POST['jm']             ?? [];
    $kolicina       = $_POST['kolicina']       ?? [];
    $cijenaBezPDV   = $_POST['cijenaBezPDV']   ?? [];
    $rabatProc      = $_POST['rabatProc']      ?? [];
    $iznosRabata    = $_POST['iznosRabata']    ?? [];
    $pdvStopa       = $_POST['pdvStopa']       ?? [];
    $ukupanPDV      = $_POST['ukupanPDV']      ?? [];
    $ukupnoBezPDV   = $_POST['ukupnoBezPDV']   ?? [];
    $ukupnoSaPDV    = $_POST['ukupnoSaPDV']    ?? [];

    $sqlItem = "
      INSERT INTO document_item
      (
        document_id,
        item_id,
        item_name,
        item_measure,
        quantity,
        unit_net_price,
        discount_percent,
        discount_value,
        pdv_percent,
        pdv_value,
        net_total,
        gross_total
      )
      VALUES (?,?,?,?,?,?,?,?,?,?,?,?)
    ";

    $stmtItem = $conn->prepare($sqlItem);
    if (!$stmtItem) {
        die("Greška pripreme STAVKE: " . $conn->error);
    }

    for ($i = 0; $i < count($sifra); $i++) {

        $itemId         = (int)$sifra[$i];
        $itemName       = $sifra[$i];
        $itemMeasure    = $jm[$i];
        $quantity       = (float)$kolicina[$i];
        $unitNetPrice   = (float)$cijenaBezPDV[$i];
        $discountPercent= (float)$rabatProc[$i];
        $discountValue  = (float)$iznosRabata[$i];
        $pdvPercent     = (float)$pdvStopa[$i];
        $pdvValue       = (float)$ukupanPDV[$i];
        $netTotal       = (float)$ukupnoBezPDV[$i];
        $grossTotal     = (float)$ukupnoSaPDV[$i];

        $stmtItem->bind_param(
           "iissdddddddd",
           $document_id,
           $itemId,
           $itemName,
           $itemMeasure,
           $quantity,
           $unitNetPrice,
           $discountPercent,
           $discountValue,
           $pdvPercent,
           $pdvValue,
           $netTotal,
           $grossTotal
        );

        if (!$stmtItem->execute()) {
            die("Greška kod stavke #$i: " . $stmtItem->error);
        }
    }
    $stmtItem->close();

    // ========== 4) SKIDANJE ARTIKALA SA LAGERA ==========
    // Za svaku stavku (artikl) – bez provjere stanja
    for ($i = 0; $i < count($sifra); $i++) {
        if (ctype_digit($sifra[$i])) {  // Ako je 'sifra' čisto broj, smatramo da je artikl
            $itemId = (int)$sifra[$i];
            $quantityToSubtract = (float)$kolicina[$i];
            $tip = 'IZLAZ';
            $datum = date('Y-m-d H:i:s');
            // Koristimo dohvaćeni tip dokumenta iz document_type (npr. "FAKTURA")
            $dokument_id = $document_id;
            $napomena = ''; // Po potrebi dodatna napomena

            $sqlInsert = "INSERT INTO lager_promet (id_artikl, datum, tip, kolicina, dokument_vrsta, dokument_id, napomena)
                          VALUES (?, ?, ?, ?, ?, ?, ?)";
            $stmtInsert = $conn->prepare($sqlInsert);
            if ($stmtInsert) {
                // Ovdje bind_param string: "issdsis" – 5th parametar je string
                $stmtInsert->bind_param("issdsis", $itemId, $datum, $tip, $quantityToSubtract, $dokument_vrsta, $dokument_id, $napomena);
                $stmtInsert->execute();
                $stmtInsert->close();
            } else {
                error_log("Greška pripreme INSERT upita za artikl ID $itemId: " . $conn->error);
            }
        }
    }

    header("Location: nova_faktura.php");
    exit;

} else {
    echo "<p>Nije poslan POST zahtjev!</p>";
}
?>
